The present invention relates to error control coding in communications systems. In particular, the present invention relates to inner codes for use with concatenated codes.
In digital satellite communication systems, error correcting coding is often used to obtain more efficient link power usage at the expense of less efficient spectral usage. In other words, additional error coding allows transmitters to send with less power at the expense of somewhat increased bandwidth. Applying error correcting codes to information in the uplink signal at the ground station helps reduce the effect of numerous sources of corrupting interference. Thus, error correcting codes attempt to lower the Bit Error Rate (BER) (generally defined as the ratio of incorrectly received information bits to the total number of received information bits) of the coded information, as received, to acceptable levels.
Among the available techniques for such error correction coding is concatenated coding. Generally, concatenated coding refers to the sequence of coding in which a second coding operation is performed upon already encoded data. The two levels of codes are generally referred to as the inner code and the outer code. The outer code of the concatenated code is the first code applied at the ground station, while the inner code is the second code applied. At the receiver, such as a receiving satellite, the inner code (if decoded at all) is decoded first followed by the outer code.
The first code the ground station applies is typically a block code. A codeword in a block code consists of K information bits, and R parity bits. The codeword is therefore N=K+R bits in length.
Block codes are generally organized on the basis of bits. A variety of block codes known as Reed-Solomon codes may be used as the outer code to encode the uplink signals. Reed-Solomon block codes, however, are organized on the basis of groups of bits referred to as codeletters. To form codeletters, an incoming serial bit stream may be reorganized as sequences of m individual bits (a codeletter). The Reed-Solomon code has K information codeletters (rather than bits), R parity codeletters, and a total codeword length of N=K+R codeletters. For 8-bit codeletters, a Reed-Solomon codeword is typically 255 codeletters in length. Allowing the codeword to correct up to 16 or fewer codeletters requires 32 parity codeletters, thereby leaving 223 data codeletters (for an effective code rate of 223/255 (approximately 7/8)).
An inner code that is often applied is a convolutional code. A convolutional code is an error correcting code which transforms an input sequence of bits into an output sequence of bits through a finite-state machine, where additional bits are added to the data stream to allow for error-correcting capability. Typically the amount of error-correction capability is proportional to the amount of additional bits added and the memory present in the finite-state machine (encoder). The constraint length, L, of a convolutional code is proportional to the finite-state machine's memory. The rate of the convolutional code (k/n, with k&lt;n) describes how many additional bits are added for every k information bits (input) (i.e., n-k bits added for each k information bits.) Viterbi decoding may be used to decode a convolutional code. Unfortunately, the decoding complexity of a convolutional code increases exponentially with the constraint length.
As an additional measure, uplink signals may be interleaved before transmission. The process of interleaving reorders coded sequences prior to transmission and is inverted after reception and decoding of the inner code but prior to decoding of the outer code. Interleaving is most beneficial when the output of the inner decode contains a burst of errors. This is because interleaving spreads burst errors out in the sequences deinterleaved after reception and thus increases the likelihood of accurate decoding. Unfortunately, interleaving coded sequences takes time, power, and computational resources, and adds to the overall complexity of the communication system.
Commonly used coding methods present two difficulties when processing information received on an uplink. First, an interleaver is impractical in most forms of uplink access because of the significant latency (i.e., additional delay) arising when interleaving is applied to a low speed application. Second, the process of Viterbi decoding, though readily realizable, consumes a significant amount of spacecraft power, which is a scarce resource. The second problem is due primarily to the fact that, for convolutional inner codes, decoding complexity increases exponentially with the constraint length.
A need has long existed for a simple and effective error control method that may be used in the uplink of a processing satellite communications system.